/*
 * cliente.c - t4/t5
 * A. Justo & Tiago Cavaco
 */

#include "chat.c"

int idFila;
int nrCliente;
int run = 1;

void send()
{
	char str[MAXSIZE];
	while (run == 1)
	{
		printf ("> ");
		fgets(str, MAXSIZE, stdin);
		enviaMensagemParaServidor(idFila, str);
		if (strcmp(str, "fim\n") == 0)
		{
			run = 0;
			exit(1);
		}
	}
}

void receive()
{
	char* strRecebida;
	while (run == 1)
	{
		strRecebida = recebeMensagem(idFila, SEND_BY_SERVER);
		printf("Mensagem recebida: %s\n", strRecebida);
	}
}

void terminar()
{
	enviaMensagemParaServidor(idFila, "fim\n");
	run = 0;
	exit(1);
}

int main (int argc, char** argv)
{
	if (argc != 2)
	{
		printf("Indique o numero do cliente.\n");
		exit(1);
	}

	nrCliente = atoi(argv[1]);
	idFila = msgget(KEY+nrCliente, 0);
	
	//sinal que associa o ctrl+c à função terminar
	signal (SIGINT, terminar);
	pthread_t t1, t2;

	//thread responsável por correr a função send
	if( pthread_create(&t1, NULL, send, NULL ) < 0 )
	{
		perror( "pthread_create" );
		exit(0);
	}

	//thread responsável por correr a função receive
	if( pthread_create(&t2, NULL, receive, NULL ) < 0 )
	{
		perror( "pthread_create" );
		exit(0);
	}

	pthread_join( t1, NULL );
	pthread_join( t2, NULL );	
}
